Data to be transmitted via a predetermined transmission path or recorded on a recording medium such as, for example, a magnetic disk, an optical disk or a magneto-optical disk, is modulated. Block encoding is known as one of such data-modulating methods. In block encoding, a row of data is divided into blocks, or units each consisting of m×i bits. (Hereinafter, the units of data will be referred to as “data words.”) The data words are modulated to code words, each consisting of n×i bits, in accordance with an appropriate encoding rule. Each code word has a fixed length if i is one (1) and has a variable length if i is selected from a plurality of values. That is, the code word has a variable length when a value ranging from 1 to imax (the greatest value for i) is selected for i. The code generated by the block encoding is a variable-length code (d, k; m, n; r).
It should be noted that the value i is called “constraint length”, and the value imax is called “maximum” constraint length r. The minimum run d indicates the least number of ones (1s) that may be included in a train of codes. The maximum run k indicates the greatest number of ones (1s) that may be included in a train of codes.
To record variable-length codes generated as described above, on a compact disk, a mini-disk or the like, NRZI (NonReturn to Zero Inverted) modulation is used. In the NRZI modulation, the variable-length code is inverted at each one (1) and not inverted at each zero (0). The variable-length codes subjected to the NRZI modulation (hereinafter referred to as “level codes”) are recorded on the disk.
Inverse NRZI modulation, wherein a level code is changed when a “1” is inverted to “0” or “0” is inverted to “1”, thereby becoming an edge, may be performed on variable-length codes. In this case, a train of codes identical to original EFM codes or RLL (1–7) codes can be obtained. These inverse NRZI codes are called “edge codes.”
Let the minimum interval of inverting level codes be Tmin, and let the maximum interval of inverting level codes be Tmax. In order to record data at high density in the linear velocity direction, it is desired that the minimum code-inverting interval Tmin be long. That is, the minimum run d should be large. In order to reproduce clock signals, it is desired that the maximum code-inverting interval Tmax be short. In other words, the maximum run k should be small. In view of this, various data-modulating methods are proposed.
One example is the data-modulating method know as RLL (1–7) that is used to record data on a magnetic disk, a magneto-optical disk or the like. The parameter for this data-modulating method is (1,7,2,3; 2). The minimum code-inverting interval Tmin is 2T, or (1+1)T. This minimum code-inverting interval Tmin is 1.33Tdata, i.e., (m/n)×Tmin=(⅔)×2. The maximum code-inverting period Tmax, given as (k+1)T, is 8, or (7+1)T=⅔×8Tdata=5.33Tdata. The width Tw of the detection window, given as (m/n)T, is 0.67 (=⅔) Tdata.
The conversion table for RLL (1–7) codes is, for example, a table shown in the following Table 1:
TABLE 1RLL (1, 7; 2, 3; 2)DataDecodei = 11100x100100110xi = 20011000 00x0010000 0100001100 00x0000100 010
Symbol x used in the conversion table is “1” when the next channel bit is “0” and is “0” when the next channel bit is “1”. The maximum constraint length r is 2.
In the train of channel bits, which has been modulated by the method RLL (1–7), 2T occurs most frequently at interval Tmin, 3Tmin, 3T occurs less frequently than 2T, and 4T occurs less frequently than 3T. If edge data items such as 2T or 3T occur at high frequency, it helps to reproduce clock signals. If 2T occurs continuously, however, its recorded waveform may likely be deformed. (The waveform output of 2T is small and is easily influenced by either defocusing or tangential tilt.) Further, the smallest marks recorded continuously in high linear density may likely be influenced by external disturbance such as noise, causing errors in the data that will be reproduced.
It has been proposed in Japanese Patent Application No. 9-133379 that Tmin be prevented from occurring more frequently than a prescribed number of times. The conversion table for RLL (1–7) codes for use in this proposed method is, for example, the following Table 2.
TABLE 2RML (1, 7; 2, 3; 3)DataCodesi = 11100x100100110xi = 20011000 00x0010000 0100001100 00x0000100 010i = 3100110100 000 010
Symbol x used in this conversion table is “1” when the next channel bit is “0” and is “0” when the next channel bit is “1”. The maximum constraint length r is 2.
In the conversion achieved by using Table 2, the next four data items are referred to when the data row becomes “10”, and a code “100 000 010” for preventing the repitition of the minimum run d is given when the data row of six bits becomes “100110”. The minimum run d may be repeated six times at most in the code obtained by this conversion.
To record data on a recording medium or transmit data in a specific way, the data is modulated into codes that can be recorded on the medium or transmitted in that specific way. The modulated codes may contain a direct-current component. If so, various error signals, such as the tracking error signal for the servo control in a disk drive, are likely to change or contain jitter. Therefore, the modulated codes should not better contain a direct-current component.
The variable-length RLL codes mentioned above, in which the minimum run d is 1 (d=1) and the conversion rates m and n are 2 and 3 (m=2, n 3), are not subjected to DSV (Digital Sum Value) control. In the DSV control, the absolute value of the total sum (DSV) of codes is decreased, when the train of channel bits is subjected to the NRZI modulation (that is, converted to level codes), and the “1” bits of the train (data symbols), i.e., +1 codes, are added, whereas the “0” bits of the train, i.e., −1 codes, are added. The DSV can serve to estimate the direct-current component in the train of codes. To decrease the absolute value of the DSV is to reduce the direct-current component in the train of codes.
In most cases, 2×(d+1) bits are used as DSV control bits. If d=1, four bits, i.e., 2×(1+1) bits, will be used as DSV bits. In this case, the minimum run and the maximum run can be maintained, and perfect DSV control can be achieved to invert codes and not to invert codes at any given intervals.
However, the DSV control bits are basically redundant bits. It is there desirable that the DSV control bits be reduced in number as much as possible in view of the efficiency of inverting codes.
Alternatively, 1×(d+1) bits may be used as DSV control bits. If so, two DSV bits, i.e., 1×(1+1) bits, will be used. In this case, too, perfect DSV control can be accomplished to invert codes and not to invert codes at any given intervals. Nonetheless, the maximum run increases to (k+2), though the minimum run can be maintained. The minimum run must be preserved by all means as a recorded code, but the maximum run need not be preserved as such. In some cases, there are formats in which a pattern breaking the maximum run is used as a sync signal. (EFM plus of DVD has a maximum run of 11T, which may increase to 14T to use a specific format.)
A table of 1,7PP (Parity preserve Prohibit rmtr) codes is available as a table that can achieve DSV control more efficiently, while preserving the basic function of the RML codes shown in Table 2. The 1,7PP codes are modulated codes, wherein the minimum run is 1 (d=1) and the maximum run is 7 (k=7). In each 1,7PP code, the minimum run is prohibited from repeating itself and rule is imparted to the elements that correspond to data words and code words.
The conversion table for 1,7PP codes, which the applicant hereof proposes in Japanese Patent Application No. 10-150280, is, for example, the following Table.
TABLE 31, 7PP (1, 7; 2, 3; 4)DataCode11*0*10001010100011010 1000010010 0000001000 100000011000 100 100000010000 100 000000001010 100 100000000010 100 000“110111001 000 000(next 010)00001000000 100 100 10000000000010 100 100 100if xx1 then *0* = 000  xx0 then *0* = 101“110111 001 000 000(next 010):When next channel bits are ‘010’,convert ‘11 01 11’ to ‘001 000 000’ afterusing main table and termination table.
In Table 3, the minimum run is 1 (d=1) and the maximum run is 7 (k=7). Among the elements sown in this conversion table are uncertain codes. An uncertain code is either “000” or “101” if two bits of the data row to be converted are (11), depending upon the code word train that immediately precedes the data row. If one channel bit of the immediately preceding code word train is “1”, the two bits (11) will be converted to “000” to preserve the minimum run. If one channel bit of the immediately preceding code word train is “0”, the two bits will be converted to “101 ” to preserve the maximum run.
The conversion table of Table 3 is one having a variable-length structure. That is, a code to be converted at the constraint length i=1 is composed of three data items, less than the four data items required [2^(m×i)=2^(2×1)=4]. Namely, among the data rows to be converted is a data row that cannot be converted at the constraint length i. After all, the constraint length i=3 must be applied to use Table 3 as a conversion table, or to convert all data rows.
The conversion table of Table 3 contains replacement codes that restrict the number of times the minimum run is repeated. Data row (110 111), or example, is replaced by “001 000 000” if the code word train that follows it is “010”. If the code word train is other than “010”, the data row will be converted to “*0*010*0*”. The code word train obtained after the data conversion is limited in terms of the number of times the minimum run is repeated. The minimum run can be repeated six times at most.
The conversion table of Table 3 is based on the conversion rule that when the number of “1s” in the elements of a data row and the number of “1s” in a code word train to be converted are divided by 2, the remainders are the same, either “1” or “0”. For example, the elements (000 001) of a data row corresponds to a code word train “010 100 100”. The data row has one “1”, whereas the code word train has three “1s”. When the number of “1s” in the data row and the number of “1s” in the code word train are divided by 2, they have the same remainder, i.e., “1”. Let us consider another example, The elements (000 000) of a data row corresponds to a code word train “010 100 000”. The data row has no “1”, whereas the code word train has two “1s”. When the number of “1s” in the data row and the number of “1s” in the code word train are divided by 2, they have the same remainder, i.e., “0”.
In the conversion table of Table 3, the maximum constraint length r is 4 (r=4). The conversion code, in which i=4, has a replacement code to achieve the maximum run k of 7 (k=7).
A data row can be modulated in accordance with the conversion table of Table 3, thereby to perform DSV control on the train of channel bits at prescribed intervals as has been practiced hither to. Nonetheless, the relation between the data row and the train of converted code words may be utilized to accomplish the DVS control at high efficiency.
As mentioned above, the conversion table may be one based on the conversion rule that when the number of “1s” in the elements of a data row and the number of s in a code word train to be converted are divided by 2, the remainders are the same, either “1” or “0”. If so, inserting a DSV control bit “1” indicating “conversion” or a DSV control bit “0” indicating “non-conversion” in the train of channel bits is equivalent to inserting a DVS control bit “1” in a data bit train to convert the data bit train or a DVS control bit “0” the data bit train not to convert the data bit train.
Assume that three bits “001” need to be converted in Table 3. To insert a DSV control bit at the end of this bit train, the data conversion is represented as (001−x), where x is one bit, either 0 or 1. If x is “0”, the conversion table of Table 3 will change to the following:
DataCodes0010010 000
If x is “1”, the conversion table of Table 3 will change to the following:
DataCodes0011010 100
The code word train may be subjected to NRZI modulation. Then, the following level codes will be obtained:
DataCodesLevel Codes0010010 0000111110011010 100011000
Obviously, the last three bits of each level code are inverse to the last three bits of the other level code. This means that DSV control can be performed on the data row by selecting either “1” or “0” for the DSV control bit x.
In view of the redundancy due to the DSV control, to perform DSV control on one bit is to perform this control on 1.5 bit. This is because in Table 3, the conversion rates m and n are 2 and 3 (m=2, n=3) in the train of channel bits. To effect DSV control in a RLL (107) table such as Table 1 is to perform the DSV control in the-train of channel bits. In order to preserve the minimum run, at least two channel bits are required as indicated above. The redundancy therefore increases.
In the conversion table of Table 3, DSV control can be carried out in a data row. The DSV control can therefore be effected efficiently. Furthermore, since the repetition of the minimum run is restricted, it is possible to generated codes that can be recorded and reproduced at high density.
To utilize the conversion table of Table 3 in practice, a sync signal must be used to identify the start of the data before the train of codes are reproduced. It is desired that the sync signal have a pattern that distinguishes the sync signal from any other signal. A plurality of sync signals must be used in some cases. If so, it is desired that the sync signals have such patterns that they may be distinguished from one another.
As described above, in order to record data on and reproduce data from a recording medium, such as a magnetic disk, a magneto-optical disk or an optical disk, at high density, it is necessary to select, as a modulated code, a code having the minimum run of 1 (d=1), to minimize the distortion of data at the time of recording and reproducing the data, thereby to inhibit generation of errors, and to use an appropriate sync signal when 1,7PP codes are selected as one suitable for high-density recording and reproduction of data.